package com.first.dao;

import com.first.entity.BOrder;
import com.first.entity.BOrderWj;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

@Repository
public interface BOrderDao {
    /**
     * 查询订单详情根据orderid
     *
     * @param bOrder
     * @return
     */
    List<Map> getBOrderById(BOrder bOrder);

    /**
     * 查询所有订单
     *
     * @param bOrder
     * @return
     */
    List<Map> getAllBOrder(BOrder bOrder);

    /**
     * 查询入库审核所有订单
     *
     * @param bOrder
     * @return
     */
    List<Map> getAllBOrder1(BOrder bOrder);


    /**
     * 查询历史订单 状态为4
     *
     * @param bOrder
     * @return
     */
    List<Map> getAllBOrder4(BOrder bOrder);

    /**
     * 查询入库书籍的信息的数量
     * @param bOrder
     * @return
     */
    int getAllBOrderCount4(BOrder bOrder);

    /**
     * 获得订单数量
     *
     * @param bOrder
     * @return
     */
    int getAllBOrderCount(BOrder bOrder);

//    /**
//     * 通过id修改订单
//     * @param bOrder
//     * @return
//     */
//    int updateById(BOrder bOrder);

    /**
     * 新增订单
     *
     * @param bOrder
     * @return
     */
    int addOrder(BOrder bOrder);

    /**
     * 将订单设为驳回状态
     * status=2
     *
     * @param bOrder
     * @return
     */
    int setStatus2(BOrder bOrder);

    /**
     * 查看所有驳回订单
     *
     * @param bOrder
     * @return
     */
    List<Map> queryReject(BOrder bOrder);


    /**
     * 查看所有驳回订单的数据数量
     *
     * @param bOrder
     * @return
     */
    int rejectCount(BOrder bOrder);
    /**
     * 通过主键的删除订单
     *
     * @param id
     * @return
     */
    int deleteById(Integer id);


    /**
     * 查询历史订单
     *
     * @param bOrder
     * @return
     */
    List<Map> getHOrder(BOrder bOrder);

    /**
     * 获得历史订单数量
     *
     * @param bOrder
     * @return
     */
    int getHBOrderCount(BOrder bOrder);

    /**
     * 显示订单未审核的表
     * Failed=未审核
     *
     * @param
     * @return
     */
    List<Map> getFailedOrder(BOrder bOrder);

    /**
     * 获取未审核查询结果个数
     * @param bOrder
     * @return
     */
   int getFailedOrderCount(BOrder bOrder);
    /**
     * 将订单状态改为通过
     *
     * @param order
     * @return
     */
    int updateStatus(BOrder order);

    /**
     * 将订单状态改为入库申请
     *
     * @param order
     * @return
     */
    int updateStatus3(BOrder order);

    /**
     * 将订单全部执行，入库，并且将订单中的数量放入仓库
     * 状态为4代表入科
     *
     * @param order
     * @return
     */
    int updateStatus4(BOrder order);


    /**
     * 将驳回订单再次提交
     *
     * @param order
     * @return
     */
    int updateStatus0(BOrder order);

    /**
     * 修改驳回订单的数据
     *
     * @param bOrderWj
     * @return
     */
    int updateReject(BOrderWj bOrderWj);

    /**
     * 修改驳回状态的订单表数量
     *
     * @param bOrder
     * @return
     */
    int updateCount(BOrder bOrder);

    /**
     * 修改实际采购入库书籍的数量和价格
     * @param bOrderWj
     * @return
     */
    double updateCOunt1(BOrderWj bOrderWj);

    /**
     * 修改总订单实际采购数量和价格
     * @param bOrder
     * @return
     */
    int updateBCount(BOrder bOrder);

}
